package cn.thinkluck.pattern.state.mario.state;

import lombok.extern.slf4j.Slf4j;

/**
 * 火焰马里奥的状态
 *
 * @Author liutao
 * @DateTime 2024/8/3 下午5:19
 */
@Slf4j
public class MarioFireStateImpl implements MarioState {
    // 持有一个马里奥对象对象 方便修改状态
    private Mario mario;

    public MarioFireStateImpl(Mario mario) {
        this.mario = mario;
    }

    @Override
    public void mushRoom() {
        log.info("火焰马里奥吃蘑菇，没变化");
    }

    @Override
    public void fireFlower() {
        log.info("火焰马里奥吃火焰，没变化");
    }

    @Override
    public void enemyAttack() {
        log.info("火焰马里奥掉坑里，变成小马里奥");
        mario.setState(new MarioSmallStateImpl(mario));
    }

    @Override
    public void fallIntoPit() {
        log.info("大马里奥掉坑里，死亡");
        mario.setState(new MarioDeadStateImpl(mario));
    }
}
